package 基础练习;


/**
 * @author： li
 * @date： 2022-01-17 20:59
 * @version 1.0
 */

/*问题描述
　　123321是一个非常特殊的数，它从左边读和从右边读是一样的。
　　输入一个正整数n， 编程求所有这样的五位和六位十进制数，满足各位数字之和等于n 。
输入格式
　　输入一行，包含一个正整数n。
输出格式
　　按从小到大的顺序输出满足条件的整数，每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
　　1<=n<=54。
思路：有两种方法，第一是我们去构造这样的特殊回文数，首先我们看这个数的特点，因为是五位和六五数的回文数，
所以我们可以根据前三位确定这个五位或者六位的数字，那满足的要求就是每个位数加起来的值为n，然后输出即可。
第二种方法就是常用的方法了，遍历所有五位和六位的数，然后取出各个位数的值，判断相加是否是n+是否是回文数，
这两个条件要同时满足。

 */
import java.util.Scanner;
public class 特殊回文数 {
    public static void speicalpalindrome(int n) {
        int x,y,z;
        //先输出五位数
        for(int i=1;i<10;i++) {
            x=i;
            for(int j=0;j<10;j++) {
                y=j;
                z=n-2*x-2*y;
                if(z>=0&&z<10) {
                    System.out.print(x);
                    System.out.print(y);
                    System.out.print(z);
                    System.out.print(y);
                    System.out.print(x);
                    System.out.println();

                }
            }
        }
        //输出六位数
        if(n%2==0) {
            for(int i=1;i<10;i++) {
                x=i;
                for(int j=0;j<10;j++) {
                    y=j;
                    z=n/2-x-y;
                    if(z>=0&&z<10) {
                        System.out.print(x);
                        System.out.print(y);
                        System.out.print(z);
                        System.out.print(z);
                        System.out.print(y);
                        System.out.print(x);
                        System.out.println();
                    }
                }
            }
        }

    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        speicalpalindrome(n);

    }
}

